/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Logica;

import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author User
 */
@Entity
@Table(name = "competencia")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Competencia.findAll", query = "SELECT c FROM Competencia c"),
    @NamedQuery(name = "Competencia.findByIdCompetencia", query = "SELECT c FROM Competencia c WHERE c.idCompetencia = :idCompetencia"),
    @NamedQuery(name = "Competencia.findByNombre", query = "SELECT c FROM Competencia c WHERE c.nombre = :nombre"),
    @NamedQuery(name = "Competencia.findByDescripcion", query = "SELECT c FROM Competencia c WHERE c.descripcion = :descripcion"),
    @NamedQuery(name = "Competencia.findByFecha", query = "SELECT c FROM Competencia c WHERE c.fecha = :fecha"),
    @NamedQuery(name = "Competencia.findByCantidadGeneral", query = "SELECT c FROM Competencia c WHERE c.cantidadGeneral = :cantidadGeneral"),
    @NamedQuery(name = "Competencia.findByCantidadPlatino", query = "SELECT c FROM Competencia c WHERE c.cantidadPlatino = :cantidadPlatino"),
    @NamedQuery(name = "Competencia.findByCantidadVip", query = "SELECT c FROM Competencia c WHERE c.cantidadVip = :cantidadVip"),
    @NamedQuery(name = "Competencia.findByCostoGeneral", query = "SELECT c FROM Competencia c WHERE c.costoGeneral = :costoGeneral"),
    @NamedQuery(name = "Competencia.findByCostoPlatino", query = "SELECT c FROM Competencia c WHERE c.costoPlatino = :costoPlatino"),
    @NamedQuery(name = "Competencia.findByCostoVip", query = "SELECT c FROM Competencia c WHERE c.costoVip = :costoVip")})
public class Competencia implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "id_competencia")
    private String idCompetencia;
    @Column(name = "nombre")
    private String nombre;
    @Column(name = "descripcion")
    private String descripcion;
    @Column(name = "fecha")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fecha;
    @Column(name = "cantidad_general")
    private Integer cantidadGeneral;
    @Column(name = "cantidad_platino")
    private Integer cantidadPlatino;
    @Column(name = "cantidad_vip")
    private Integer cantidadVip;
    @Column(name = "costo_general")
    private Integer costoGeneral;
    @Column(name = "costo_platino")
    private Integer costoPlatino;
    @Column(name = "costo_vip")
    private Integer costoVip;
    @ManyToMany(mappedBy = "competenciaCollection")
    private Collection<Colaborador> colaboradorCollection;
    @JoinTable(name = "ayuda", joinColumns = {
        @JoinColumn(name = "id_competencia", referencedColumnName = "id_competencia")}, inverseJoinColumns = {
        @JoinColumn(name = "id_persona", referencedColumnName = "id_persona")})
    @ManyToMany
    private Collection<PersonaApoyo> personaApoyoCollection;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "competencia")
    private Collection<Compite> compiteCollection;
    @JoinColumn(name = "id_espacio", referencedColumnName = "id_espacio")
    @ManyToOne
    private EspacioDeportivo idEspacio;
    @JoinColumn(name = "id_disciplina", referencedColumnName = "id_disciplina")
    @ManyToOne
    private Disciplina idDisciplina;

    public Competencia() {
    }

    public Competencia(String idCompetencia) {
        this.idCompetencia = idCompetencia;
    }

    public String getIdCompetencia() {
        return idCompetencia;
    }

    public void setIdCompetencia(String idCompetencia) {
        this.idCompetencia = idCompetencia;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public Date getFecha() {
        return fecha;
    }

    public void setFecha(Date fecha) {
        this.fecha = fecha;
    }

    public Integer getCantidadGeneral() {
        return cantidadGeneral;
    }

    public void setCantidadGeneral(Integer cantidadGeneral) {
        this.cantidadGeneral = cantidadGeneral;
    }

    public Integer getCantidadPlatino() {
        return cantidadPlatino;
    }

    public void setCantidadPlatino(Integer cantidadPlatino) {
        this.cantidadPlatino = cantidadPlatino;
    }

    public Integer getCantidadVip() {
        return cantidadVip;
    }

    public void setCantidadVip(Integer cantidadVip) {
        this.cantidadVip = cantidadVip;
    }

    public Integer getCostoGeneral() {
        return costoGeneral;
    }

    public void setCostoGeneral(Integer costoGeneral) {
        this.costoGeneral = costoGeneral;
    }

    public Integer getCostoPlatino() {
        return costoPlatino;
    }

    public void setCostoPlatino(Integer costoPlatino) {
        this.costoPlatino = costoPlatino;
    }

    public Integer getCostoVip() {
        return costoVip;
    }

    public void setCostoVip(Integer costoVip) {
        this.costoVip = costoVip;
    }

    @XmlTransient
    public Collection<Colaborador> getColaboradorCollection() {
        return colaboradorCollection;
    }

    public void setColaboradorCollection(Collection<Colaborador> colaboradorCollection) {
        this.colaboradorCollection = colaboradorCollection;
    }

    @XmlTransient
    public Collection<PersonaApoyo> getPersonaApoyoCollection() {
        return personaApoyoCollection;
    }

    public void setPersonaApoyoCollection(Collection<PersonaApoyo> personaApoyoCollection) {
        this.personaApoyoCollection = personaApoyoCollection;
    }

    @XmlTransient
    public Collection<Compite> getCompiteCollection() {
        return compiteCollection;
    }

    public void setCompiteCollection(Collection<Compite> compiteCollection) {
        this.compiteCollection = compiteCollection;
    }

    public EspacioDeportivo getIdEspacio() {
        return idEspacio;
    }

    public void setIdEspacio(EspacioDeportivo idEspacio) {
        this.idEspacio = idEspacio;
    }

    public Disciplina getIdDisciplina() {
        return idDisciplina;
    }

    public void setIdDisciplina(Disciplina idDisciplina) {
        this.idDisciplina = idDisciplina;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idCompetencia != null ? idCompetencia.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Competencia)) {
            return false;
        }
        Competencia other = (Competencia) object;
        if ((this.idCompetencia == null && other.idCompetencia != null) || (this.idCompetencia != null && !this.idCompetencia.equals(other.idCompetencia))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "Logica.Competencia[ idCompetencia=" + idCompetencia + " ]";
    }
    
}
